//
//  ZYStatusListViewModel.swift
//  weiboZY
//
//  Created by 赵勇 on 16/5/15.
//  Copyright © 2016年 赵勇. All rights reserved.
//

import UIKit
// tableView 对应的ViewModel
class ZYStatusListViewModel: NSObject {

    // 保存数据
    var statusList: [ZYStatusViewModel]?
    
    // 获取微博数据
    func requestStatus(isPullUp: Bool, complete: (isSuccess:Bool, message:String)->()) {
        
        // 上拉加载默认的maxId
        var maxId: Int64 = 0
        // 下拉刷新加载默认
        var sinceId: Int64 = 0
        // 判断是否上拉刷新
        if isPullUp {
            maxId = statusList?.last?.status?.id ?? 0
            if maxId > 0 {
                // 去除重复的微博数据
                maxId -= 1
                
            }
        } else {
            // 下拉刷新要取数组里第一条数据
            sinceId = statusList?.first?.status?.id ?? 0
        }

      
        var message: String = "没有加载到数据"
        ZYNetWorkTools.sharedTool.requestStatus(ZYUserAccountViewModel.sharedUserAccount.accessToken!,maxId: maxId,sinceId: sinceId) { (response, error) -> () in
            
//            dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (Int64)(1 * NSEC_PER_SEC)), dispatch_get_main_queue(), { () -> Void in
//
//            })

            
            if error != nil {
                print("数据请求异常")
                complete(isSuccess: false, message: message)
                return
            }
        
            // 代码执行到此 数据请求成功
            guard let dict = response as? [String:AnyObject] else {
                print("数据不是字典格式")
                  complete(isSuccess: false, message: message)
                return
            }
      
            
            guard let statusArray = dict["statuses"] as? [[String:AnyObject]] else {
                print("数据不是字典格式")
                complete(isSuccess: false, message: message)
                return
            }
            
            // 遍历数组初始化模型
            
            var tempArray = [ZYStatusViewModel]()
            
            for value in statusArray {
                
                let status = ZYStatus(dict: value)
                let statusViewModel = ZYStatusViewModel(status: status)
                tempArray.append(statusViewModel)
                
            }
            // 判断statusList是否为空 为空的话进行初始化
            if self.statusList == nil {
                self.statusList = [ZYStatusViewModel]()
            }
            
            
            if isPullUp {
                self.statusList! += tempArray
            } else {
                self.statusList! = tempArray + self.statusList!
            }
            
            // 刷新数据
//            self.statusList = tempArray
            let count = tempArray.count
            
            if count > 0 {
                message = "加载了\(count)条数据"
            }
            
            // 通过闭包回调数据
              complete(isSuccess: true, message: message)
        }
        
        
    }
    
    
    
    
}












